import { IsNotEmpty, IsNumber, Min, IsUUID, IsOptional } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';
import { Type } from 'class-transformer';

/**
 * 商品批量导入DTO
 * 用于验证商品Excel导入的请求数据
 */
export class ImportProductDto {
  /**
   * 商品名称
   * @type {string}
   * @required 是
   * @length 2-100个字符
   */
  @ApiProperty({ description: '商品名称', example: '智能手机' })
  @IsNotEmpty({ message: '商品名称不能为空' })
  name: string;

  /**
   * 商品描述
   * @type {string}
   * @required 否
   */
  @ApiProperty({ description: '商品描述', required: false, example: '高性能智能手机，6.7英寸屏幕' })
  description?: string;

  /**
   * 商品价格
   * @type {number}
   * @required 是
   * @minimum 0.01
   */
  @ApiProperty({ description: '商品价格', example: 2999.99 })
  @Type(() => Number)
  @IsNumber({}, { message: '价格必须是数字' })
  @Min(0.01, { message: '价格不能小于0.01' })
  price: number;

  /**
   * 分类ID
   * @type {number}
   * @required 是
   */
  @ApiProperty({ description: '分类ID', example: '1' })
  @IsNotEmpty({ message: '分类ID不能为空' })
  @Type(() => Number)
  @IsNumber({}, { message: '分类ID必须是数字' })
  categoryId: number;

  /**
   * 商品图片URL
   * @type {string}
   * @required 否
   */
  @ApiProperty({ description: '商品图片URL', required: false, example: 'https://example.com/images/phone.jpg' })
  imageUrl?: string;
}